package ignoreurl

import (
	"gitee.com/tomatomeatman/golang-repository/bricks3/utils/ginutil"

	"github.com/gin-gonic/gin"
)

// @Controller 拦截器忽略路径控制器
type IgnoreUrlController struct {
}

/**
 * 初始化
 */
func init() {
	IgnoreUrlController{}.RegisterUrl()
}

// -- 检查待新增内容是否存在重复数据(单独字段重复即重复)集合,注意:int必须是1、10、100、1000 --//
func (control IgnoreUrlController) CheckRepeatAlone() []string {
	return []string{"sUrlName"}
}

// 接口注册
func (control IgnoreUrlController) RegisterUrl() {
	ginutil.AddUrl("/ignore/url/check", control.CheckIgnoreUrl, ginutil.POST)
	ginutil.AddUrl("/ignore/url/clear/cache", control.ClearCache, ginutil.POST)
}

// #region @Api {title=验证指定url是否在可忽略的访问路径中(给内部拦截器用,直接返回Boolean)}
// @param {name=sUrl dataType=string paramType=query explain=待检验的url required=true}
// @param {name=sUserType dataType=string paramType=query explain=待检验的用户类型 required=false}
// @param {name=iMustLogin dataType=int paramType=query explain=是否必须登录,1:是;2:否 required=false}
// @return {type=bool explain=返回是否在可忽略的访问路径中}
// @RequestMapping {name=FindByPage type=POST value=/ignore/url/check}
// #endregion
func (control IgnoreUrlController) CheckIgnoreUrl(ctx *gin.Context) (bool, string, interface{}) {
	sUrl := ginutil.GetParam(ctx, "sUrl", "").(string)           //待检验的url
	sUserType := ginutil.GetParam(ctx, "sUserType", "").(string) //待检验的用户类型
	iMustLogin := ginutil.GetParam(ctx, "iMustLogin", 2).(int)   //是否必须登录,1:是;2:否

	return IgnoreUrlService{}.CheckIgnoreUrl(sUrl, iMustLogin == 1, sUserType)
}

// #region @Api {title=清理缓存 explain=直接操作数据库的情况下需要手工更新缓存}
// @return {type=(bool, string, interface{}) explain=返回分页数据}
// @RequestMapping {name=FindByPage type=POST value=/ignore/url/clear/cache}
// #endregion
func (control IgnoreUrlController) ClearCache(ctx *gin.Context) (bool, string, interface{}) {
	return IgnoreUrlService{}.ClearCache(ctx, "", "")
}
